package jmine.tec.services.api.export;

import java.util.List;

import jmine.tec.services.io.ServiceBean;
import jmine.tec.utils.register.Receiver;

/**
 * Interface a ser implementada para o actor de exportação.
 * 
 * @author lundberg
 */
public interface ExportActor extends Receiver<EntityExporter<?>> {

    /**
     * Recebe uma lista de ExportTargets para gerar serviços adequados. Para manter compatibilidade, essa lista pode também conter objetos
     * que não implementem a interface. Nesse caso, a implementação deve designar uma ExportAction default. No futuro essa interface
     * aceitará apenas ExportTarget's na lista.
     * 
     * @param targets targets
     * @return Lista de ServicesPageBean
     */
    List<ServiceBean> export(List<?> targets);

    /**
     * Dada a classe de uma entidade e a ação desejada, retorna true caso o ExportActor seja capaz de exportá-la, falso caso contrário.
     * 
     * @param action action
     * @param entityClass entityClass
     * @return boolean
     */
    boolean canExport(ExportAction action, Class<?> entityClass);
}
